package com.jwx.mycar.utils;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

import static com.jwx.mycar.common.Constants.TMP_FILE;

/**
 * 只需要知道这个工具类的作用是将网络图片暂存在本地（项目的临时tmp目录），
 * 保存路径设置在com.example.demo.constant.AipImageConstant.TMP_FILE属性中
 * 在调用完识别接口后又将临时图片删除
 */
public class GetPicFromUrl {

    /**
     * 网络图片保存到本地
     * @param destUrl
     */
    public static void saveToFile(String destUrl) {
        FileOutputStream fos = null;
        BufferedInputStream bis = null;
        HttpURLConnection httpUrl = null;
        URL url = null;
        int BUFFER_SIZE = 1024;
        byte[] buf = new byte[BUFFER_SIZE];
        int size = 0;
        try {
            url = new URL(destUrl);
            httpUrl = (HttpURLConnection) url.openConnection();
            httpUrl.connect();
            bis = new BufferedInputStream(httpUrl.getInputStream());
            fos = new FileOutputStream(TMP_FILE);
            while ((size = bis.read(buf)) != -1) {
                fos.write(buf, 0, size);
            }
            fos.flush();
        } catch (IOException e) {
        } catch (ClassCastException e) {
        } finally {
            try {
                fos.close();
                bis.close();
                httpUrl.disconnect();
            } catch (IOException e) {
            } catch (NullPointerException e) {
            }
        }
    }

    /*注意：
        如果路径或者源文件名称中包含特殊符号或者空格，会报505错误，此时需要对URL进行转码
    　　ftpUrl=ftpUrl.replaceAll("%", "%25");//先将地址本身带有的%转为%25
    　　ftpUrl=ftpUrl.replaceAll(" ", "%20");//再将空格转换为%20
        转码之后读取正常。
    */

    /**
     * 删除临时图片
     */
    public static void deleteTmpFile(){
        File file = new File(TMP_FILE);
        file.delete();
    }
}
